
const fs = require('fs');

function getFileByPath(pathStr) {
  var promise = new Promise(function (resolve, reject) {
    fs.readFile(pathStr, 'utf-8', (err, data) => {
      if (err) return reject(err);
      resolve(data);
    })
  })
  return promise;
}

// getFileByPath('./1.txt')
//   .then(function (data) {
//     console.log(data);
//     return getFileByPath('./2.txt')
//    })
//   .then(function (data) {
//     console.log(data);
//     return getFileByPath('./3.txt')
//    })
//   .then(function (data) {
//     console.log(data);
//   })

// 需求： 当前一个读取失败的时候，不要影响后面代码的执行
// getFileByPath('./11.txt')
//   .then(function (data) {
//     console.log(data);
//     return getFileByPath('./2.txt')
//   }, function (err) {
//       console.log(err.message);
//       return getFileByPath('./2.txt');
//    })
//   .then(function (data) {
//     console.log(data);
//     return getFileByPath('./3.txt')
//    })
//   .then(function (data) {
//     console.log(data);
//   })

// 需求： 当有一个发生错误的时候立即终止程序，并捕获异常
getFileByPath('./1.txt')
  .then(function (data) {
    console.log(data);
    return getFileByPath('./22.txt')
   })
  .then(function (data) {
    console.log(data);
    return getFileByPath('./3.txt')
   })
  .then(function (data) {
    console.log(data);
  })
  // catch 的作用：如果前面有任何的 Promise 执行失败，则立即终止所有 promise 的执行，并 马上进入 catch 去处理 Promise 中抛出的异常
  .catch((err)=>{
    console.log("这是自己的处理方式："+err.message)
    })